﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using HerGoS.ControlsUI;
using HerGoS.Viaticos.Engine;
using HerGoS.Viaticos.Entities;

namespace HerGoS.WebUI.Viaticos.Liquidaciones
{
    public partial class ImprimirAnticipo : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {

            this.btnImprimir.Settings(new ButtonExtText());
            if (Request.QueryString["id"] != null)
            {
                var Id = Convert.ToInt32(Request.QueryString["id"]);

                Liquidacion liquidacion = GestorLiquidacion.Obtener(Id);

                this.lblfechaLiquidacion.Text = DateTime.Now.ToShortDateString();
                this.lblNumSolicitud.Text = liquidacion.SolicitudLiquidada.Numero.ToString();
                lblApellidoyNombrePasajero.Text = liquidacion.SolicitudLiquidada.Persona.NombresYApellidos;

                this.lblAnticipoViaticosSi.Visible = true;
                this.lblAnticipoViaticosSi.Text = "X";



                 CalculoViaticos calc = GestorViaticos.CalcularVitaticos(liquidacion);

                 decimal tarifadiariaSumarizado = 0;   
                    List<TramosViaticosReporte> listaTramoReporte = new List<TramosViaticosReporte>();
                   
                    var result = liquidacion.Tramos.Find(y => y.Transporte.Descripcion == "AVION");

                    if (result != null)
                    {
                        this.lblPasajesAreosSi.Visible = true;
                        this.lblPasajesAreosSi.Text = "X";

                    }
                    else
                    {
                        this.lblPasajesAreosNo.Visible = true;
                        this.lblPasajesAreosNo.Text = "X";
                    
                    }

                    if (liquidacion.CantidadKms > 0)
                    {
                        lblVehiculoPropioSi.Visible = true;
                        lblVehiculoPropioSi.Text = "X";
                        this.lblCantidadKmSI.Visible = true;
                        this.lblCantidadKmSI.Text = String.Format("{0:0.00}", liquidacion.CantidadKms);
                    }
                    else
                    {
                        lblVehiculoPropioNo.Text = "X";
                        this.lblVehiculoPropioNo.Visible = true;
                    
                    }


                   
                    for (int i = 0; i <= liquidacion.Tramos.Count - 1; i++)
                      {
                          var tramoReporte = new TramosViaticosReporte();
                       
                            tramoReporte.Partida = "Partida";
                            tramoReporte.OrigenDestino = liquidacion.Tramos[i].CiudadOrigen.Nombre;
                            tramoReporte.Fecha = liquidacion.Tramos[i].FechaOrigen.Value.ToShortDateString();
                            tramoReporte.Hora = liquidacion.Tramos[i].FechaOrigen.Value.ToString("HH:mm");
                            tramoReporte.Vuelo = liquidacion.Tramos[i].NroServicioOrigen.ToString();
                            tramoReporte.Codigo = liquidacion.Tramos[i].CodigoOrigen.ToString();
                            tramoReporte.Observaciones = liquidacion.Tramos[i].ObservacionOrigen.ToString();
                                              
                             listaTramoReporte.Add(tramoReporte);

                             var tramoReporteLLegada = new TramosViaticosReporte();

                            tramoReporteLLegada.Partida = "Llegada";
                            tramoReporteLLegada.OrigenDestino = liquidacion.Tramos[i].CiudadDestino.Nombre;
                            tramoReporteLLegada.Fecha = liquidacion.Tramos[i].FechaDestino.Value.ToShortDateString();
                            tramoReporteLLegada.Hora = liquidacion.Tramos[i].FechaDestino.Value.ToString("HH:mm");
                            tramoReporteLLegada.Vuelo = liquidacion.Tramos[i].NroServicioDestino.ToString();
                            tramoReporteLLegada.Codigo = string.Empty;
                            tramoReporteLLegada.Observaciones = liquidacion.Tramos[i].ObservacionDestino.ToString();

                            tarifadiariaSumarizado = liquidacion.Tramos[i].TarifaDiariaDestino;
                           listaTramoReporte.Add(tramoReporteLLegada);             

			          }
                
                    GridTramosViaticosReporte.DataSource = listaTramoReporte;
                    GridTramosViaticosReporte.DataBind();

                    this.lblMotivo.Text = liquidacion.SolicitudLiquidada.Motivo;
                    this.lblObservacion.Text = liquidacion.SolicitudLiquidada.Observaciones;


                  // decimal promediotarifaDiaria = tarifadiariaSumarizado;
                    var cantidadtramos = liquidacion.Tramos.Count();

                    this.lblDias.Text = calc.TotalCantidadViaticos.ToString();
                    var indiceUltimo = liquidacion.Tramos.Count - 1;
                    this.lblTarifaDiaria.Text = String.Format("{0:0.00}",liquidacion.Tramos[indiceUltimo - 1].TarifaDiariaDestino);
                    this.lbltotal.Text = String.Format("{0:0.00}", calc.TotalGeneral);
                    this.lblSubtotal.Text = String.Format("{0:0.00}", calc.TotalGeneral); 



            }
        }
    }
}